package com.topwalk.datacollect.server;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.topwalk.datacollect.dao.TZcOtherDao;
import com.topwalk.datacollect.dao.TZcTaskInfoDao;
import com.topwalk.datacollect.dao.imp.*;
import com.topwalk.datacollect.enumI.ServerEnum;
import com.topwalk.datacollect.model.BizLinkTask;
import com.topwalk.datacollect.model.TRegBizinfList;
import com.topwalk.datacollect.task.GetPlatLinkBizIDByTaskIdFuture;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.FutureTask;

/**
 * 通过taskID获取PlatID linkID bizID
 * 通过ip获取设备id
 */
@Service
public class GetPlatLinkBizIDByTaskIDBaseServer extends BaseServer<String> {
//    @Autowired
//    private TZcMtpDtpTaskDaoImpl tZcMtpDtpTaskDao;
//    @Autowired
//    private TZcTaskInfoDaoImpl tZcTaskInfoDao;
    @Autowired
    private TZcOtherDao otherDao;

    @Override
    public String handleBiz(List<String> args) {
        JSONArray results = new JSONArray();
        String api = args.get(1);
        //通过taskID获取PlatID linkID bizID
        JSONArray jsonArray = JSON.parseArray(args.get(0));


        //开10个线程处理
//        int size = jsonArray.size();
//            int num = size / 10;
//            int last = size % 10;
//
//            List<JSONArray> inputs = new ArrayList<>();
//            for (int i = 0; i < 10; i++) {
//                JSONArray inputs_temp = new JSONArray();
//                if(i == 9){
//                    for (int j = i * num ; j < (i + 1) * num + last; j++){
//                        inputs_temp.add(jsonArray.get(j));
//                    }
//                }else {
//                    for (int j = i * num; j < (i + 1) * num; j++) {
//                        inputs_temp.add(jsonArray.get(j));
//                    }
//                }
//                inputs.add(inputs_temp);
//            }
//
//            List<FutureTask<List<Object>>> resultsFutures = new ArrayList<>();
//            for(int i = 0,_size = inputs.size(); i < _size ; i++ ){
//                FutureTask<List<Object>> futureTask = new FutureTask<>(new GetPlatLinkBizIDByTaskIdFuture(inputs.get(i),tbResourcesDao,tbTaskDao,dataFlow));
//                futureTask.run();
//                resultsFutures.add(futureTask);
//            }
//
//            for(int i = 0,_size = resultsFutures.size(); i < _size ; i++ ){
//                try {
//                    List<Object> maps = resultsFutures.get(i).get();
//                    results.addAll(maps);
//                } catch (Exception e) {
//                    System.err.println(e.getMessage());
//                }
//            }






        JSONObject jsonObject;
        for (Object child : jsonArray) {
            jsonObject = (JSONObject) child;
            String taskID = jsonObject.getString("taskID");
            if(StringUtils.isEmpty(taskID)){
                continue;
            }

            List<Map<String, Object>> others = otherDao.findOther(api, taskID);
            if (others != null && others.size() == 1) {
                Map<String, Object> otherMap = others.get(0);
                if(otherMap.get("deviceID") != null){
                    jsonObject.put("deviceID", String.valueOf(otherMap.get("deviceID")));
                }
                if(otherMap.get("platID") != null){
                    jsonObject.put("platID",String.valueOf(otherMap.get("platID")));
                }
                if(otherMap.get("linkID") != null){
                    jsonObject.put("linkID",String.valueOf(otherMap.get("platID")));
                }
                if(otherMap.get("bizID") != null){
                    jsonObject.put("bizID",String.valueOf(otherMap.get("platID")));
                }

            }

//            //根据taskID 去dtpTask/mtpTask表 取deviceId
//            List<Map<String, Object>> deviceIDs = tZcMtpDtpTaskDao.findDeviceIdByTaskId(api, taskID);
//            String deviceID = "";
//            if (deviceIDs != null && deviceIDs.size() == 1) {
//                Map<String, Object> deviceIDMap = deviceIDs.get(0);
//                deviceID = String.valueOf(deviceIDMap.get("deviceID"));
//                jsonObject.put("deviceID", deviceID);
//            }
//
//            //根据taskId 去t_zc_taskinfo表取platID、innerLinkID、bizID
//            if (!StringUtils.isEmpty(deviceID)) {
//                List<Map<String, Object>> infoDaoByTaskId = tZcTaskInfoDao.findByTaskId(taskID);
//                if(infoDaoByTaskId != null && infoDaoByTaskId.size() ==1){
//                    Map<String, Object> taskInfoMap = infoDaoByTaskId.get(0);
//                    jsonObject.put("platID",String.valueOf(taskInfoMap.get("platID")));
//                    jsonObject.put("linkID",String.valueOf(taskInfoMap.get("platID")));
//                    jsonObject.put("bizID",String.valueOf(taskInfoMap.get("platID")));
//
//                }
//
//            }

            jsonObject.remove("taskID");

            jsonObject.put("ZJLID", UUID.randomUUID().toString());
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
            String formatDate = simpleDateFormat.format(new Date());
            jsonObject.put("XXRKSJ", formatDate);

            results.add(jsonObject);

        }


        return results.toJSONString();
    }
}
